package com.hevery.security.core.validate.code;

import java.time.LocalDateTime;

/**
 * @author: zhy
 * @description: 验证码类，封装验证码的属性。
 * @date: created on 2017/10/26
 * @modified by:
 */
public class ValidateCode {

    /**生成验证码的随机数，要存在Session里和用户提交的进行验证*/
    private String code;

    /**验证码的过期时间*/
    private LocalDateTime expireTime;

    /**我们在指定验证码过期时间的时候不会直接指定一个日期，而是一个秒数，比如60s过期，180s过期
     * 所以构造函数中expireIn表示在多少秒内过期，但是存的时候要存一个真正过期的时间点。
     *
     */
    public ValidateCode(String code, int expireIn) {
        this.code = code;
        this.expireTime = LocalDateTime.now().plusSeconds(expireIn);
    }

    public ValidateCode(String code, LocalDateTime expireTime) {
        this.code = code;
        this.expireTime = expireTime;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public LocalDateTime getExpireTime() {
        return expireTime;
    }

    public void setExpireTime(LocalDateTime expireTime) {
        this.expireTime = expireTime;
    }

    /**
     * 判断验证码是否已经过期
     * @return
     */
    public boolean isExpired() {
        return LocalDateTime.now().isAfter(expireTime);
    }
}
